#!/bin/python3
"""
    LeetCode 111.py
    ~~~~~
    @Description:
        给定一个二叉树，找出其最小深度。

        最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

        说明: 叶子节点是指没有子节点的节点。

        示例:

        给定二叉树 [3,9,20,null,null,15,7],

            3
           / \
          9  20
            /  \
           15   7
        返回它的最小深度  2.

    @CreateTime: 2019/12/16 15:00
    @Author: leo
    @License: MIT
"""

import sys


class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


def minDepth(root: TreeNode) -> int:
    if root is None:
        return 0
    if (root.left or root.right) is None:
        return 1
    min_depth = sys.maxsize
    if root.left is not None:
        min_depth = min(minDepth(root.left), min_depth)
    if root.right is not None:
        min_depth = min(minDepth(root.right), min_depth)
    return min_depth + 1



